﻿using BonjourQuotation.ObjectModel.BusinessData;
using BonjourQuotation.ObjectModel.ErrorData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BonjourQuotation.DataAccess.Repositories
{
    public interface IQuotationRepository : IDisposable
    {
        List<QuotaFindHotelBData> FindHotelWithKeyword(string HotelName);
        ErrorBInfo MakeQuotaToId(int id);
        QuotationDetailsBData GetQuotationBDataByQuotaId(int QuotaId, string UserName);
        int GetQuotationQuotaID(int param, List<string> UserRegions);
        QuotationDetailsBData SaveAsQuotationBDataByQuotaId(int QuotaId, string UserName);
        QuotationDetailsBData NewQuotationBData(string UserName);
        List<QuotaLookupBData> LoadQuotaLookupData(string ByRef, string Keyword);
        QuotaHotelGridBData LoadQuotaHotelGrid(int QuotaId);
        QuotaLunchDinnerGridBData LoadQuotaLunchDinnerGrid(int QuotaId);
        QuotaEntranceGridBData LoadQuotaEntranceGrid(int QuotaId);
        QuotaMiscGridBData LoadQuotaMiscGrid(int QuotaId);
        QuotaBusGridBData LoadQuotaBusGrid(int QuotaId);
        QuotaGuideGridBData LoadQuotaGuideGrid(int QuotaId);
        ErrorBInfo RemoveFromGrid(int ItmID, int QuotaId, int LineNo, string TabName);
        QuotaCostPriceGridBData LoadQuotaCostPriceGrid(int QuotaId, string FreeCalcType);
        QuotaCostPriceGridBData CalcQuotaCostPriceGrid(int QuotaId, QuotaCostPriceGridBData Data, string FreeCalcType);
        ErrorBInfo SaveQuotaDetails(QuotationDetailsBData QuotaDetails);
        QuotaHotelGridBData NewLineQuotaHotelGrid(int QuotaId);
        QuotaHotelGridBData InsertLineQuotaHotelGrid(int QuotaId, int LineNum);
        QuotaHotelGridBData UpdateQuotaHotelGrid(List<QuotaHotelGridRowBData> Rows, bool IsNewLine, bool IsInsert, int InsertRow);
        QuotaLunchDinnerGridBData NewLineQuotaLunchDinnerGrid(int QuotaId);
        QuotaLunchDinnerGridBData UpdateQuotaLunchDinnerGrid(List<QuotaLunchDinnerGridRowBData> Rows);
        QuotaLunchDinnerGridBData InsertLineQuotaLunchDinnerGrid(int QuotaId, int LineNum);
        QuotaEntranceGridBData NewLineQuotaEntranceGrid(int QuotaId);
        QuotaEntranceGridBData InsertLineQuotaEntranceGrid(int QuotaId, int LineNum);
        QuotaEntranceGridBData UpdateQuotaEntranceGrid(List<QuotaEntranceGridRowBData> Rows);
        QuotaMiscGridBData NewLineQuotaMiscGrid(int QuotaId);
        QuotaMiscGridBData InsertLineQuotaMiscGrid(int QuotaId, int LineNum);
        QuotaMiscGridBData UpdateQuotaMiscGrid(List<QuotaMiscGridRowBData> Rows);
        QuotaBusGridBData NewLineQuotaBusGrid(int QuotaId);
        QuotaBusGridBData InsertLineQuotaBusGrid(int QuotaId, int LineNum);
        QuotaBusGridBData UpdateQuotaBusGrid(List<QuotaBusGridRowBData> Rows);
        QuotaGuideGridBData NewLineQuotaGuideGrid(int QuotaId);
        QuotaGuideGridBData InsertLineQuotaGuideGrid(int QuotaId, int LineNum);
        QuotaGuideGridBData UpdateQuotaGuideGrid(List<QuotaGuideGridRowBData> Rows);
        ErrorBInfo UploadProposal(int QuotaId, string PropFile);
        QuotationAdvancedSearchBData QuotationAdvancedSearchBData();
        List<QuotaAdvancedSearchGridBData> QuotationAdvancedSearch(QuotationAdvancedSearchBData data);
        Dictionary<int, string> FindKeywordInEntity(string PropName, string keyword);
        QuotaVendorContractsBData LoadVendorContract(int VendorID, int SeasonID);
        int CreateNonGirGroup();
        ErrorBInfo SaveNonGirGroup(QuotationGroupBData Data);
        QuotationGirGroupGridBData CreateGirNonGirGroup(int QuotaID, bool Gir, string UserName);
        QuotationGirGroupGridBData SaveGirNonGirGroup(QuotationGirGroupGridBData Data, bool Gir, string UserName);
        QuotationGirGroupGridBData SaveGirGroupInvoice(QuotationGirGroupGridBData Data, string UserName);
        QuotationGirGroupGridBData NewGirNonGirGroup(QuotationGirGroupGridBData Data, bool Gir, string UserName);
        QuotationGirGroupGridBData NewGirNonGirGroupPushOperation(int GroupID, bool Gir, string UserName);
        QuotationGirGroupGridBData NewGirGroupCustomer(QuotationGirGroupGridBData Data, string UserName);
    }
}
